/**
 * @file Name: 9.cpp
 * @author: Fenghuwuyu
 * @version: 1.0
 * @brief:
 * @date: Sat 22 May 2021 02:13:35 AM PDT
 */

#include<iostream>
int main()


// Function Objects(sometimes called a functor):
// template<typename T>
// class Less_than
// {
//		private:
//			const T val; // va;ie to compare against
//		public:
//			Less_than(const T& v) : val(v) {}
//			bool operator()(const T& x) const {return x<val;} // call operator
// }
//
// Less_than<int> lti{42}; // lti(i) will compare i to 42 using < (i<42)
//
//
//
//
// Variadic Templates:
// template<typename T, typename... Tail>
// void f(T head, Tail... tail)
// {
//		g(head); // do something to head
//		f(tail...); // try again with tail
// }
//
// void f(){} // do nothing
//
// Then if we define:
// template<typename T>
// void g(T x)
// {
//		std::cout << x << "";
// }
//
// and use f(1, 2.2, "hello")
// then we will print:
// 1 2.2 hello
